package org.luxor.storage.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.luxor.commons.storage.constant.StorageType;
import org.luxor.storage.entity.OssFileEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

/**
 * OSS文件管理服务
 *
 * @author Mr.yan @date 2020/3/14
 */
public interface IOssFileMgrService extends IService<OssFileEntity> {

    /**
     * 分页查询
     *
     * @param page   分页对象
     * @param search 查询条件
     * @return
     */
    IPage<OssFileEntity> page(IPage<OssFileEntity> page, Map search);

    /**
     * 文件上传
     *
     * @param storageType  (0：本地磁盘 1：Minio 2：FastDfs 3：七牛  4：阿里云  5：腾讯云)
     * @param file
     * @return
     */
    OssFileEntity upload(StorageType storageType, MultipartFile file) throws IOException;

    /**
     * 内部文件下载（会跳过防盗链检查）
     *
     * @param storageType  (0：本地磁盘 1：Minio 2：FastDfs 3：七牛  4：阿里云  5：腾讯云)
     * @param fileFullPath
     * @param response
     */
    void download(StorageType storageType, String fileFullPath, HttpServletResponse response);

    /**
     * md5文件唯一识别检查
     *
     * @param md5
     * @return
     */
    boolean checkMd5(String md5);
}
